import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// *********************************** 路径配置新增 start  
import { resolve } from 'path'     
import svgLoader from 'vite-svg-loader'
 
const pathResolve = (dir: string): any => {  
  return resolve(__dirname,'.', dir)          
}
 
const alias: Record<string, string> = {
  '@': pathResolve("src")
}
 
// ********************************** 路径配置新增  end 

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue(), svgLoader()],
  resolve: {  // ****************** 路径配置新增
    alias     // ****************** 路径配置新增
  },           // ****************** 路径配置新增
  server: {
    port: 3000,
    open: false,
    host: '0.0.0.0',
    // 配置代理
    proxy: {
      // 请求的路径前缀只要是 /api 就会被拦截走这个代理
      '/api': {
      /**
        *  请求的目标资源再经过替换成 /httphwm/getList 后，
        *  会加上 http://127.0.0.1:9693 这个前缀，
        *  最后请求的URL为: http://127.0.0.1:9693/httphwm/getList
        */
        target: 'http://127.0.0.1:7755',
        ws: true,
        changeOrigin: true,
        // 拦截到的请求路径 api/httphwm/getList，/testaxios会被替换成空
        rewrite: (path) => path.replace(/^\/api/, ''),
      },
    },
  },
  build: {
    sourcemap: false,
    minify: 'terser',
    chunkSizeWarningLimit: 1500,
    terserOptions: {
      compress: {
        drop_console: true,
        drop_debugger: true
      }
    },
    // 分解打包
    rollupOptions: {
      output: {
        manualChunks(id) {
          if (id.includes('node_modules')) {
            return id
              .toString()
              .split('node_modules/')[1]
              .split('/')[0]
              .toString();
          }
        },
        chunkFileNames: (chunkInfo) => {
          const facadeModuleId = chunkInfo.facadeModuleId
            ? chunkInfo.facadeModuleId.split('/')
            : [];
          const fileName =
            facadeModuleId[facadeModuleId.length - 2] || '[name]';
          return `js/${fileName}/[name].[hash].js`;
        }
      }
    }
  }
})
